package com.workants.eboleta.presenter;

import java.io.Serializable;

import com.vaadin.ui.UI;
import com.workants.eboleta.IService.IServiceRegistro;
import com.workants.eboleta.handler.IViewRegistroHandler;
import com.workants.eboleta.model.Solicitante;
import com.workants.eboleta.model.Titular;
import com.workants.eboleta.ui.ViewPrincipal;
import com.workants.eboleta.ui.ViewRegistro;

public class PresenterViewRegistro implements IViewRegistroHandler, Serializable{

	
	
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private ViewRegistro viewRegistro;
	private IServiceRegistro service;
	
	
	public PresenterViewRegistro(ViewRegistro viewRegistro, IServiceRegistro service){
		
		this.viewRegistro = viewRegistro;
		this.service = service;
	}

	
	
	@Override
	public void subscribir() {
		
		Titular titular = new Titular();		
		titular.setIdPerona(0);
		titular.setApellido(viewRegistro.getViewRegistroCuerpo().getLayoutEsTitular().getTxtApellido().getValue().toUpperCase());
		titular.setNombre(viewRegistro.getViewRegistroCuerpo().getLayoutEsTitular().getTxtNombre().getValue().toUpperCase());
		titular.setTipoDocumentoTitular(viewRegistro.getViewRegistroCuerpo().getLayoutEsTitular().getCmbTipoDocumento().getValue().toString());
		titular.setNumeroDeDocumentoTitular(viewRegistro.getViewRegistroCuerpo().getLayoutEsTitular().getTxtNumeroDeDocumento().getValue());
		titular.setTipoTelefonoTitular(viewRegistro.getViewRegistroCuerpo().getLayoutEsTitular().getCmbTipoTelefono().getValue().toString());
		titular.setNumeroDeTelefonoTitular(viewRegistro.getViewRegistroCuerpo().getLayoutEsTitular().getTxtNumeroDeTelefono().getValue());		
		if (viewRegistro.getViewRegistroCuerpo().getLayoutEsTitular().getCmbTipoTelefonoAlternativo().getValue() != null){ 
			titular.setTipoTelefonoAlternativoTitular(viewRegistro.getViewRegistroCuerpo().getLayoutEsTitular().getCmbTipoTelefonoAlternativo().getValue().toString());
			}
			else {
				titular.setTipoTelefonoAlternativoTitular("dato no completado");
				}
			
		if (viewRegistro.getViewRegistroCuerpo().getLayoutEsTitular().getTxtNumeroDeTelefonoAlternativo().getValue() != null){
			titular.setNumeroDeTelefonoAlternativoTitular(viewRegistro.getViewRegistroCuerpo().getLayoutEsTitular().getTxtNumeroDeTelefonoAlternativo().getValue().toString());
		}   else{
			titular.setNumeroDeTelefonoAlternativoTitular("dato no completado");
		}
		titular.setCorreoElectronicoTitular(viewRegistro.getViewRegistroCuerpo().getLayoutEsTitular().getTxtEmail().getValue());
		
		String nombreImpuesto = (String) UI.getCurrent().getSession().getAttribute("nombreImpuesto");
		String codigo = (String) UI.getCurrent().getSession().getAttribute("codigo");
		
		if (service.subscribir(titular, nombreImpuesto, codigo) != 0){
			viewRegistro.suscribirExitoso();
		} else viewRegistro.suscribirError();
		
		
	}



	@Override
	public void subscribirSolicitante() {
		
		Titular titular = new Titular();	
		titular.setIdPerona(0);
		titular.setApellido(viewRegistro.getViewRegistroCuerpo().getLayoutNoEsTitular().getAcordion().getFormDatosTitular().getTxtApellido().getValue().toUpperCase());
		titular.setNombre(viewRegistro.getViewRegistroCuerpo().getLayoutNoEsTitular().getAcordion().getFormDatosTitular().getTxtNombre().getValue().toUpperCase());
		titular.setTipoDocumentoTitular(viewRegistro.getViewRegistroCuerpo().getLayoutNoEsTitular().getAcordion().getFormDatosTitular().getCmbTipoDocumento().getValue().toString());
		titular.setNumeroDeDocumentoTitular(viewRegistro.getViewRegistroCuerpo().getLayoutNoEsTitular().getAcordion().getFormDatosTitular().getTxtNumeroDeDocumento().getValue());
		titular.setTipoTelefonoTitular(viewRegistro.getViewRegistroCuerpo().getLayoutNoEsTitular().getAcordion().getFormDatosTitular().getCmbTipoTelefono().getValue().toString());
		titular.setNumeroDeTelefonoTitular(viewRegistro.getViewRegistroCuerpo().getLayoutNoEsTitular().getAcordion().getFormDatosTitular().getTxtNumeroDeTelefono().getValue());
		if (viewRegistro.getViewRegistroCuerpo().getLayoutNoEsTitular().getAcordion().getFormDatosTitular().getCmbTipoTelefonoAlternativo().getValue() != null){ 
			titular.setTipoTelefonoAlternativoTitular(viewRegistro.getViewRegistroCuerpo().getLayoutNoEsTitular().getAcordion().getFormDatosTitular().getCmbTipoTelefonoAlternativo().getValue().toString());
			}
			else {
				titular.setTipoTelefonoAlternativoTitular("dato no completado");
				}
			
		if (viewRegistro.getViewRegistroCuerpo().getLayoutNoEsTitular().getAcordion().getFormDatosTitular().getCmbTipoTelefonoAlternativo().getValue() != null){
			titular.setNumeroDeTelefonoAlternativoTitular(viewRegistro.getViewRegistroCuerpo().getLayoutNoEsTitular().getAcordion().getFormDatosTitular().getTxtNumeroDeTelefonoAlternativo().getValue());
		}   else{
			titular.setNumeroDeTelefonoAlternativoTitular("dato no completado");
		}
		
		Solicitante solicitante = new Solicitante();
		solicitante.setIdPerona(0);
		solicitante.setApellido(viewRegistro.getViewRegistroCuerpo().getLayoutNoEsTitular().getAcordion().getFormDatosSolicitante().getTxtApellido().getValue());
		solicitante.setNombre(viewRegistro.getViewRegistroCuerpo().getLayoutNoEsTitular().getAcordion().getFormDatosSolicitante().getTxtNombre().getValue());
		solicitante.setTipoDocumentoTitular(viewRegistro.getViewRegistroCuerpo().getLayoutNoEsTitular().getAcordion().getFormDatosSolicitante().getCmbTipoDocumento().getValue().toString());
		solicitante.setNumeroDeDocumentoSolicitante(viewRegistro.getViewRegistroCuerpo().getLayoutNoEsTitular().getAcordion().getFormDatosSolicitante().getTxtNumeroDeDocumento().getValue());
		solicitante.setTipoTelefonoSolicitante(viewRegistro.getViewRegistroCuerpo().getLayoutNoEsTitular().getAcordion().getFormDatosSolicitante().getCmbTipoTelefono().getValue().toString());
		solicitante.setNumeroDeTelefonoSolicitante(viewRegistro.getViewRegistroCuerpo().getLayoutNoEsTitular().getAcordion().getFormDatosSolicitante().getTxtNumeroDeTelefono().getValue());
		solicitante.setCorreoElectronicoSolicitante(viewRegistro.getViewRegistroCuerpo().getLayoutNoEsTitular().getAcordion().getFormDatosSolicitante().getTxtEmail().getValue());
		

		
		
		
		String nombreImpuesto = (String) UI.getCurrent().getSession().getAttribute("nombreImpuesto");
		String codigo = (String) UI.getCurrent().getSession().getAttribute("codigo");
		
		if (service.subscribirSolicitante(titular, solicitante, nombreImpuesto, codigo) != 0){
			viewRegistro.subscribirSolicitanteExitoso();
		}else viewRegistro.subscribirSolicitanteErroneo();
	}



	@Override
	public void limpiar() {
		
		viewRegistro.getViewRegistroCuerpo().getLayoutEsTitular().getTxtApellido().setValue("");
		viewRegistro.getViewRegistroCuerpo().getLayoutEsTitular().getTxtNombre().setValue("");
		viewRegistro.getViewRegistroCuerpo().getLayoutEsTitular().getTxtEmail().setValue("");
		viewRegistro.getViewRegistroCuerpo().getLayoutEsTitular().getTxtNumeroDeDocumento().setValue("");
		viewRegistro.getViewRegistroCuerpo().getLayoutEsTitular().getTxtNumeroDeTelefono().setValue("");
		viewRegistro.getViewRegistroCuerpo().getLayoutEsTitular().getTxtNumeroDeTelefonoAlternativo().setValue("");
		viewRegistro.getViewRegistroCuerpo().getLayoutEsTitular().getCmbTipoDocumento().setValue(null);
		viewRegistro.getViewRegistroCuerpo().getLayoutEsTitular().getCmbTipoTelefono().setValue(null);
		viewRegistro.getViewRegistroCuerpo().getLayoutEsTitular().getCmbTipoTelefonoAlternativo().setValue(null);
		
	}



	@Override
	public void volver() {
		
		UI.getCurrent().getSession().close(); // cerramos todo las variables de sesion
		UI.getCurrent().getUI().getPage().setLocation(ViewPrincipal.NAME); //redireccionamos
		
	}



	@Override
	public void limpiarSolicitante() {
		
		viewRegistro.getViewRegistroCuerpo().getLayoutNoEsTitular().getAcordion().getFormDatosTitular().getTxtApellido().setValue("");
		viewRegistro.getViewRegistroCuerpo().getLayoutNoEsTitular().getAcordion().getFormDatosTitular().getTxtNombre().setValue("");
		viewRegistro.getViewRegistroCuerpo().getLayoutNoEsTitular().getAcordion().getFormDatosTitular().getTxtNumeroDeDocumento().setValue("");
		viewRegistro.getViewRegistroCuerpo().getLayoutNoEsTitular().getAcordion().getFormDatosTitular().getTxtNumeroDeTelefono().setValue("");
		viewRegistro.getViewRegistroCuerpo().getLayoutNoEsTitular().getAcordion().getFormDatosTitular().getTxtNumeroDeTelefonoAlternativo().setValue("");
		viewRegistro.getViewRegistroCuerpo().getLayoutNoEsTitular().getAcordion().getFormDatosTitular().getCmbTipoDocumento().setValue(null);
		viewRegistro.getViewRegistroCuerpo().getLayoutNoEsTitular().getAcordion().getFormDatosTitular().getCmbTipoTelefono().setValue(null);
		viewRegistro.getViewRegistroCuerpo().getLayoutNoEsTitular().getAcordion().getFormDatosTitular().getCmbTipoTelefonoAlternativo().setValue(null);
		
		viewRegistro.getViewRegistroCuerpo().getLayoutNoEsTitular().getAcordion().getFormDatosSolicitante().getTxtApellido().setValue("");
		viewRegistro.getViewRegistroCuerpo().getLayoutNoEsTitular().getAcordion().getFormDatosSolicitante().getTxtNombre().setValue("");
		viewRegistro.getViewRegistroCuerpo().getLayoutNoEsTitular().getAcordion().getFormDatosSolicitante().getTxtEmail().setValue("");
		viewRegistro.getViewRegistroCuerpo().getLayoutNoEsTitular().getAcordion().getFormDatosSolicitante().getTxtNumeroDeDocumento().setValue("");
		viewRegistro.getViewRegistroCuerpo().getLayoutNoEsTitular().getAcordion().getFormDatosSolicitante().getTxtNumeroDeTelefono().setValue("");
		viewRegistro.getViewRegistroCuerpo().getLayoutNoEsTitular().getAcordion().getFormDatosSolicitante().getCmbTipoDocumento().setValue(null);
		viewRegistro.getViewRegistroCuerpo().getLayoutNoEsTitular().getAcordion().getFormDatosSolicitante().getCmbTipoTelefono().setValue(null);
		
		
		
		
	}

}
